TIP Sample App/PipelineInspectorViewController.m (106 lines of code) (raw):
//
// PipelineInspectorViewController.m
// TwitterImagePipeline
//
// Created on 2/21/17.
// Copyright © 2020 Twitter. All rights reserved.
//
#import <TwitterImagePipeline/TwitterImagePipeline.h>
#import "PipelineCacheInspectionResultsViewController.h"
#import "PipelineInspectorViewController.h"
@interface PipelineInspectorViewController () <UITableViewDelegate, UITableViewDataSource>
{
TIPImagePipelineInspectionResult *_result;
UITableView *_tableView;
BOOL _shouldAutoPop;
PipelineCacheInspectionResultsViewController *_presentedResults;
}
@end
@implementation PipelineInspectorViewController
- (instancetype)initWithPipelineInspectionResult:(TIPImagePipelineInspectionResult *)result
{
if (self = [self init]) {
_result = result;
self.navigationItem.title = result.imagePipeline.identifier;
}
return self;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (_presentedResults) {
_shouldAutoPop = _presentedResults.didClearAnyEntries;
_presentedResults = nil;
}
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (_shouldAutoPop) {
[self.navigationController popToRootViewControllerAnimated:YES];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
_tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
_tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];
}
#pragma mark Table View
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 4;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EntryGroupCell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"EntryGroupCell"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
switch (indexPath.row) {
case 0:
cell.textLabel.text = [NSString stringWithFormat:@"Rendered Entries (%tu)", _result.completeRenderedEntries.count];
break;
case 1:
cell.textLabel.text = [NSString stringWithFormat:@"Memory Entries (%tu)", _result.completeMemoryEntries.count];
break;
case 2:
cell.textLabel.text = [NSString stringWithFormat:@"Incomplete Disk Entries (%tu)", _result.partialDiskEntries.count];
break;
case 3:
default:
cell.textLabel.text = [NSString stringWithFormat:@"Complete Disk Entries (%tu)", _result.completeDiskEntries.count];
break;
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSArray<id<TIPImagePipelineInspectionResultEntry>> *entries = nil;
NSString *name = nil;
switch (indexPath.row) {
case 0:
entries = _result.completeRenderedEntries;
name = @"Rendered";
break;
case 1:
entries = _result.completeMemoryEntries;
name = @"Memory";
break;
case 2:
entries = _result.partialDiskEntries;
name = @"Incomplete Disk";
break;
case 3:
default:
entries = _result.completeDiskEntries;
name = @"Complete Disk";
break;
}
_presentedResults = [[PipelineCacheInspectionResultsViewController alloc] initWithResults:entries pipeline:_result.imagePipeline];
_presentedResults.navigationItem.title = name;
[self.navigationController pushViewController:_presentedResults animated:YES];
}
@end